import React from 'react';
import { Route } from 'react-router-dom';
import { getToken } from 'utils/storage';

export default function AuthRoute(props) {
  const { path, component: Comp } = props;
  return (
    <Route
      path={path}
      render={(props) => {
        // 💥 注意：props是原本Route组件会绑定到component身上的props，保存了路由信息
        // 1. 通过render控制跳转
        // 2. 如有token存在，返回一个Layout组件，表示通过可以访问
        if (!!getToken()) {
          // 💥 render返回的组件，默认props.history会丢失，需要手动绑定回去
          return <Comp {...props} />;
        }
        // 3. 如果token不存在，重定向到登录页面
        props.history.push('/login');
      }}
    ></Route>
  );
}
